iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

套件安裝

  1. OpenCV與Numpy
    • 指令:pip install opencv-python

    • 安裝完成


內容

  1. 讀取圖檔

    1.1 讀取圖片

    • OpenCV內建函數

      • 程式碼

        image_path = './over_brain.jpg'
        image = cv2.imread(image_path)
        
      • 讀取一般路徑圖片

      • 讀取中文路徑圖片(出現cv2.error)

    • Numpy讀取中文路徑圖片,並轉換為BGR(因OpenCV預設畫素排列順序為BGR)

      • 程式碼

        image_path = './大腦已超載.jpg'
        image = cv2.imdecode(np.fromfile(image_path, dtype=np.uint8), -1)
        image = cv2.cvtColor(cv_img, cv2.COLOR_BGRA2BGR)
        
      • 執行結果

    1.2 讀取影片

    • 程式碼

      import cv2
      
      video_path = './road.mp4'
      cap = cv2.VideoCapture(video_path)
      # frame_rate代表每幾幀擷取一次
      frame_rate = 3
      count = 1
      
      while(True):
        ret, frame = cap.read()
        if ret:
          if count % frame_rate == 0:
            print("擷取影片第:" + str(count) + " 幀")
            # 將擷取圖片縮小,便於顯示
            resize_img = cv2.resize(frame, (540, 960), interpolation=cv2.INTER_AREA)
            cv2.imshow('frame', resize_img)
            cv2.waitKey(0)
          count += 1
        else:
          pass
      cap.release()
      cv2.destroyAllWindows()
      print('程式執行結束')
      
    • 讀取結果

      • 擷取影片第3幀

      • 擷取影片第6幀

  2. 儲存圖檔

    2.1 OpenCV內建函數

    • 程式碼

      import cv2
      
      image_path = './over_brain.jpg'
      image = cv2.imread(image_path)
      cv2.imwrite('./over_brain2.jpg', image)
      
    • 儲存一般路徑圖片

    • 儲存中文路徑圖片(未成功儲存圖片)

    2.2 Numpy儲存中文路徑圖片

    • 程式碼

      import cv2
      
      image_path = './大腦已超載.jpg'
      image = cv2.imdecode(np.fromfile(image_path, dtype=np.uint8), -1)
      image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)
      cv2.imencode('.jpg', image)[1].tofile('./大腦已超載2.jpg')
      
    • 執行結果

  3. 印出圖片資訊:印出的(h, w, c),分別代表圖片的高度、寬度與通道數(彩色為3通道)

    3.1 圖片:

    • 程式碼:print(image.shape)
    • 結果:

    3.2 影片擷取:

    • 程式碼:print(resize_img.shape)
    • 結果:

小結

  1. 今天,分享了如何讀取與儲存圖片、從影片中擷取目標幀圖片與印出圖片的資訊。
  2. 下一站,我們前往「OpenCV影像處理(二)」,簡單地操作影像縮放、旋轉與裁切、合併。

讓我們繼續看下去...


參考資料

  1. road.mp4影片,來自於Pexels免費圖庫影片

上一篇
《第2天》前哨站
下一篇
《第4天》OpenCV影像處理(二)
系列文
Object Detection and Image Processing with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言